home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #194 (1992)(Rhein-Sieg-Soft).zip / Franz PD Disk #194 (1992)(Rhein-Sieg-Soft).adf / HERALD_V1.0 / HERALD.DOK < prev    next >
Text File  |  1992-09-14  |  11KB  |  313 lines

  1.  
  2.  
  3.                              HERALD V1.0
  4.  
  5.                                  C
  6.  
  7.                                 1992
  8.  
  9.                                  by
  10.  
  11.                             Matthias Gutt
  12.                              Kantstr. 16
  13.                            W-2120 Lüneburg
  14.                           Tel.:04131/49624
  15.                          (20.30 - 21.30 Uhr)
  16.  
  17. 1.0 Copyright-Hinweise
  18.  
  19. 2.0 Programmidee & -funktion
  20.  
  21. 3.0 Die `Guru-Meditationen`
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.                        1.0 Copyright-Hinweise
  29.  
  30. Das Programm `HERALD` ist PD-Software und darf frei weitergegeben werden !
  31. Dieses Programm soll die endgültigen Fehlermeldungen des Amiga-Betriebs-
  32. systems erklären.
  33. Diesem Beitrag liegt auch der Quelltext, des in ASSEMBLER geschriebenen
  34. Programmes, bei.
  35. Das Programm `HERALD` wurde mit dem Assembler `masterseka v1.51` erstellt.
  36. Sie können es auf jeder PD-Diskette veröffentlichen, solange keine Änderungen
  37. am Binär-Code, am Quelltext und am ASCII-Text der Dokumentation vorgenommen
  38. worden sind !
  39. Es kann auch als Hilfsprogramm von der `startup-sequence` jeder Diskette
  40. aufgerufen werden.
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.                        2.0 Programmidee & -funktion
  48.  
  49. Natürlich ist `HERALD` der `Guru-Dekoder` kein neues Programm - keine neue
  50. Idee ...
  51. Denn schon vor mir hatten andere Programmierer die Idee, ein Programm zu
  52. schreiben, welches die komplizierten und Laien nur schwer verständlichen
  53. Fehlermeldungen des AmigaDOS-Betriebssystems in verständlicher Sprache
  54. übersetzt.
  55. Aber es gibt ja auch unzählige `Label-Printer-Programme` in `AmigaBASIC`
  56. und `GFA-BASIC` und trotzdem scheinen derartige Programme noch beliebt zu
  57. sein !
  58. Die Aufgabe den Anwender über Fehlfunktionen im Amiga zu informieren,
  59. übernehmen also die `Guru`-Meldungen !
  60. Doch leider gibt es zu wenige von ihnen, da es nicht selten vorkommt, daß
  61. der Amiga mal total abstürzt, ohne sich vorher zu melden.
  62. Meist bekommt man bei derartigen Gelegenheiten auch die Chance, zu sehen,
  63. welche grafischen Fähigkeiten im Amiga stecken ...
  64. Erscheinen `Guru`-Meldungen nun doch einmal, so weiß nicht jeder was sie
  65. bedeuten, womit sie ihren Zweck wieder einmal nicht erfüllt hätten.
  66. Leider führen viele `Guru`s sofort zum Absturz, was nicht immer notwendig
  67. wäre.
  68. Vor allem für Programmierer wäre es wichtig zu wissen, welcher Fehler sich
  69. hinter einer bestimmten `Guru`-Meldung verbirgt.
  70. Nicht selten gibt es für kompliziert wirkende `Guru`-Meldungen einfache
  71. Erklärungen !
  72. Auch für Anwender ist es wichtig zu wissen, warum ein bestimmtes Programm
  73. abstürzt.
  74. Diesen Informationsmangel zu decken, dient `HERALD` !
  75. Das Programm kopiert sich absolut nach $7A000 in den Speicher und belegt 9kB.
  76. Es verbiegt den Vektor der Routine DisplayAlert () auf die eigene Adresse
  77. und wird so beim Ausgeben einer `Alert`-Meldung aktiviert !
  78. `HERALD` gibt dann in maximal vier `Alert`s an, um welchen Type, ausgelöst
  79. durch welches Subsystem, welcher Fehlerklasse und welchen Fehler es sich
  80. handelt !
  81. Anschließend wird der echte `Guru` gezeigt, damit Sie auch wissen, an welcher
  82. Stelle das Programm im Speicher abgestürzt ist.
  83. `HERALD` ist nicht resetfest.
  84. Es erzeugt beim Starten einen eigenen `Alert` mit dem `Copyright`-Hinweis.
  85. Die `Alert`s lassen sich durch Drücken einer beliebigen Maustaste wegklicken.
  86. Sie können `HERALD` von der `startup-sequence` an erster Stelle aufrufen,
  87. so daß es beim Absturz evtl. folgender Programme  aktiviert wird.
  88. Wenn Sie selbst programmieren und Ihr Programm sich noch in der Entwicklungs-
  89. phase befindet und `Guru`s auslöst, so empfiehlt es sich, vor dem Starten
  90. dieses Programmes `HERALD` zu starten, so daß Sie beim nächsten Absturz eine
  91. genaue Fehlerbeschreibung erhalten !
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.                        3.0 Die `Guru-Meditationen`
  103.  
  104. Neben dem Text setzt sich eine `Guru`-Meldung vorwiegend aus zwei Hexadezimal-
  105. Zahlen zusammen !
  106. Dabei kennzeichnet die rechte Zahl die Stelle des abstürzenden Programmes
  107. im Speicher und die linke stellt den Fehlervektor dar !
  108. Uns interessiert diesmal nur der Fehlervektor, welcher aus acht Ziffern be-
  109. steht !
  110. Die erste Ziffer zeigt an, ob es sich um einen `RECOVERY-ALERT` oder um
  111. einen `DEADEND-ALERT` handelt.
  112. Die Ziffer `0` steht für einen `RECOVERY-ALERT` und die `8` für einen
  113. `DEADEND-ALERT` !
  114.  
  115. Beispiel:       #00000000 = `RECOVERY-ALERT`
  116.                 #80000000 = `DEADEND-ALERT`
  117.  
  118.  
  119. Ein `RECOVERY-ALERT` bricht nur das startende Programm ab, während hingegen
  120. ein `DEADEND-ALERT` zum Reset führt !
  121. Im ersten ``Alert` zeigt `HERALD` also den jeweiligen `ALERT-TYPE` an !
  122.  
  123. Die erste und die zweite Ziffer geben aber auch Aufschluß darüber, von welcher
  124. Quelle die Fehlermeldung stammt.
  125. Es wird also das Sub-System angedeutet:
  126.  
  127. Sub-System:           Fehlervektor:
  128.  
  129. Der Prozessor         #00000000
  130.  
  131. exec.library          #01000000
  132. graphics.library      #02000000
  133. layers.library        #03000000
  134. intuition.library     #04000000
  135. math.library          #05000000
  136. clist.library         #06000000
  137. dos.library           #07000000
  138. ram.library           #08000000
  139. icon.library          #09000000
  140. expansion.library     #0A000000
  141.  
  142. audio.device          #10000000
  143. console.device        #11000000
  144. gameport.device       #12000000
  145. keyboard.device       #13000000
  146. trackdisk.device      #14000000
  147. timer.device          #15000000
  148.  
  149. CIA                   #20000000
  150. Disk                  #21000000
  151. Misc                  #22000000
  152.  
  153. Bootstrap             #30000000
  154. Workbench             #31000000
  155. DiskCopy              #32000000
  156.  
  157. Im zweiten `Alert` gibt `HERALD` also das `SUBSYSTEM` bekannt.
  158.  
  159. Die vierte Ziffer schließlich zeigt die Fehlerklasse an:
  160.  
  161. Fehlerklasse:                Fehlervektor:
  162.  
  163. Speicherplatzmangel.          #00010000
  164. Fehler bei Aufbau der
  165. Bibliothek.                   #00020000
  166. Bibliothek konnte nicht
  167. geöffnet werden.              #00030000
  168. Gerät konnte nicht geöffnet
  169. werden.                       #00040000
  170. Keine Hardware-Reaktion.      #00050000
  171. Eingabe/Ausgabe-Fehler.       #00060000
  172. I/O nicht verfügbar.          #00070000
  173.  
  174. Der dritte `Alert` von `HERALD` beschreibt somit die Fehlerklasse.
  175. Doch einer hält sich nicht ganz an diese Regeln und das ist der Prozessor
  176. selbst !
  177. Hier also die `TRAP-CODES`:
  178.  
  179. Fehlerbeschreibung:                Fehlervektor:
  180.  
  181. Daten- oder Adreßbus-Fehler beim
  182. Takten.                             #00000002
  183. Adressierungsfehler.                #00000003
  184. ( Dieser Fehler kommt ziemlich häufig vor - gerade bei Anfängern !
  185.   Er entsteht dann, wenn versucht wird eine ungerade Speicheradresse
  186.   langwortweise abzufragen, zu beschreiben oder zu vergleichen !
  187.   Ungerade Adressen in hexadezimal enden mit: 1,3,5,7,9,B und D
  188.   Abhilfe schafft: Die Adresse byteweise abzufragen oder den `Befehl`
  189.   `even` in ASSEMBLER zu verwenden ! )
  190. Illegal Instruktion.                #00000004
  191. ( Dieser Fehler kommt ähnlich häufig vor, wie der Adressierungsfehler !
  192.   Er wird durch den ASSEMBLER-Befehl `illegal` und durch jeden Befehl,
  193.   den der 68000-Prozessor nicht kennt verursacht !
  194.   Also eine Art `Syntax Error` des Betriebssystems ... )
  195. Division durch Null.                #00000005
  196. ( Diese Fehlermeldung dürfte auch von jedem Taschenrechner bekannt sein ! )
  197. CHR Instruktion.                    #00000006
  198. TRAPV Instruktion.                  #00000007
  199. Privileg-Verletzung.                #00000008
  200. Einzelschrittmodus.                 #00000009
  201. OpCode 1010.                        #0000000A
  202. OpCode 1111.                        #0000000B
  203.  
  204. Nun kommen die Fehlermeldungen der Sub-Systeme:
  205.  
  206. exec.library:
  207.  
  208. #01000000  Prüfsummenfehler bei Prozessor-Ausnahmen.
  209. #81000002  Fehlerhafte Prüfsumme der `ExecBase`-Struktur.
  210. #81000003  Fehlerhafte Prüfsumme einer Systembibliothek.
  211. #81000004  Speichermangel beim Öffnen einer Systembibliothek.
  212. #81000005  Speicherlisteneintrag falsch.
  213. #81000006  Zu wenig Speicherplatz für Interrupt.
  214. #81000007  Fehlerhafter Vektor.
  215. #81000008  Fehlerhafte Semaphore.
  216. #81000009  Doppelte Freigabe des selben Speicherbereiches.
  217. #8100000A  Vektor-Fehler bei Ausnahme.
  218.  
  219. graphics.library:
  220.  
  221. #82010001  Speichermangel beim Erstellen der Copper-Liste.
  222. #82010002  Speichermangel beim Erstellen der Copper-Instruktions-Liste.
  223. #82010003  Cooper-Liste ist vollständig belegt.
  224. #82010004  Aufteilungsfehler in der Copper-Liste.
  225. #82010005  Speichermangel bei Erstellung des Copper-Listenkopfes.
  226. #82010006  Speichermangel für `LONG FRAME`.
  227. #82010007  Speichermangel für `SHORT FRAME`.
  228. #82010008  Speichermangel beim Ausführen der Fill ()-Routine.
  229. #82010009  Speichermangel beim Ausführen der Text ()-Routine.
  230. #8201000A  Speichermangel beim Erstellen der BlitterBitMap.
  231. #8201000B  Speicherbereich falsch.
  232. #82010030  Fehler beim Ausstatten eines ViewPorts.
  233. #82011234  GfxNoLCM ( kein Zwischenspeicher verfügbar ).
  234.  
  235. layers.library:
  236.  
  237. #03000001  Speichermangel beim Erstellen der `Layers`.
  238.  
  239. intuition.library:
  240.  
  241. #84000000  Unbekannter `Gadget`-Type.
  242. #04000001  Typenfehler beim AN-`Gadget`.
  243. #84010002  Speichermangel beim Erstellen eines Ports.
  244. #04010003  Speichermangel beim Erstellen eines Menüs.
  245. #04010004  Speichermangel beim Erstellen eines Sub-Menüs.
  246. #84010005  Speicherplatz für Menü-Leiste reichte nicht aus.
  247. #84000006  Position der Menü-Leiste fehlerhaft.
  248. #84010007  Speichermangel beim Starten der OpenScreen ()-Routine.
  249. #84010008  Speichermangel beim Erstellen eines RastPorts.
  250. #84000009  `Screen`-Type unbekannt.
  251. #8401000A  Speicher reicht für `Gadget` nicht aus.
  252. #8401000B  Speicher reicht für Fenster nicht aus.
  253. #8400000C  Falscher Status im Status-Register beim Öffnen der Systembibliothek.
  254. #8400000D  Falsche Nachricht vom IDCMP empfangen.
  255. #8400000E  Nachrichten-Stapel droht überzulaufen.
  256. #8400000F  Speicher für `console.device` reicht nicht aus.
  257.  
  258. dos.library:
  259.  
  260. #07000001  Speichermangel beim StartUp.
  261. #07000002  Task wurde nicht beendet.
  262. #07000003  Optk-Fehler.
  263. #07000004  Unerwartetes Datenpaket erhalten.
  264. #07000005  Unerreichbarer freier Zeiger.
  265. #07000006  Disk-Block hat fehlerhafte Daten.
  266. #07000007  BitMap wurde zerstört.
  267. #07000008  Key wurde bereits freigegeben.
  268. #07000009  Fehlerhafte Prüfsumme.
  269. #0700000A  Disk Fehler.
  270. #0700000B  Key liegt außerhalb des zugelassenen Bereichs.
  271. #0700000C  Falsches Überschreiben.
  272.  
  273. ram.library:
  274.  
  275. #08000001  Verwaltungsliste: Fehleintrag.
  276.  
  277. expansion.library:
  278.  
  279. #0A000001  Hardware-Modifizierung fehlerhaft.
  280.  
  281. trackdisk.device:
  282.  
  283. #14000001  Fehler beim Suchen ...
  284. #14000002  Verzögerung durch Timer-Impuls-Fehler.
  285.  
  286. timer.device:
  287.  
  288. #15000001  Zugriffsfehler.
  289. #15000002  Durch Netzspannungsschwankungen entstandene Fehler bei der
  290.            Zeitkoordinierung.
  291.  
  292. disk.resource
  293.  
  294. #21000001  Die eingelegte Diskette konnte nicht erkannt werden.
  295. #21000002  Unterbrechung, da kein Laufwerk angeschlossen ist.
  296.  
  297. bootstrap:
  298.  
  299. #30000001  `Bootblock`-Daten fehlerhaft.
  300.  
  301. Im letzten `Alert` gibt `HERALD` also die genaue Fehlerbeschreibung aus !
  302. Ich selbst arbeite mit `KickStart V1.2`, die Werte aber reichen bis 
  303. `KickStart V1.3`.
  304. Da `HERALD` bis auf den Speicherbereich relativ programmiert ist, dürfte
  305. es unter anderen `KickStart`s keine Anpassungsschwierigkeiten geben.
  306. Jedoch werden mit Sicherheit nicht ALLE `Guru`-Meldungen komplett ent-
  307. schlüsselt werden können, da mir alle nicht bekannt sind !
  308. Zumindest aber dürfte das Anzeigen des Sub-Systems und die Fehlerklasse
  309. die Dekodierung des `Guru`s erleichtern.
  310.  
  311. BUG Rogers
  312.  
  313.